python学习笔记:机器学习算法

您所在的位置:网站首页 xgboost 特征处理 python学习笔记:机器学习算法

python学习笔记:机器学习算法

2023-02-02 04:02| 来源: 网络整理| 查看: 265

算法原理:拟合残差

其中初始决策树的预测结果不完全准确,会产生一些残差,因此会用新的决策树来拟合该残差,新的决策树又会产生新的残差,这时再构造新的决策树来拟合新的残差……如此迭代下去,直至符合预先设定的条件为止。

XGBoost模型可以采用pip安装法安装。以Windows操作系统为例,在命令行窗口中输入并执行命令“pipinstallxgboost”,或者在JupyterNotebook中输入并运行代码“!pipinstallxgboost”,即可开始安装。

#简单使用 from xgboost import XGBClassifier import numpy as np X=np.array([[1,2],[3,4],[5,6],[7,8],[9,10]]) y=[0,0,0,1,1] model=XGBClassifier() model.fit(X,y) print(model.predict([[5,5]])) #回归问题 from xgboost import XGBRegressor X=[[1,2],[3,4],[5,6],[7,8],[9,10]] y=[1,2,3,4,5] model=XGBRegressor() model.fit(X,y) print(model.predict([[5,5]]))

案例

背景

信用卡盗刷一般发生在持卡人信息被不法分子窃取后复制卡片进行消费或信用卡被他人冒领后激活并消费等情况下。一旦发生信用卡盗刷,持卡人和银行都会遭受一定的经济损失。因此,通过大数据技术搭建金融反欺诈模型对银行来说尤为重要。

import pandas as pd df=pd.read_excel('信用卡交易数据.xlsx') X=df.drop(columns='欺诈标签') y=df['欺诈标签'] from sklearn.model_selection import train_test_split X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=123) from xgboost import XGBClassifier clf=XGBClassifier(n_estimators=100,learning_rate=0.05) clf.fit(X_train,y_train) #模型预测及评估 y_pred=clf.predict(X_test) a=pd.DataFrame()#创建一个空DataFrame a['预测值']=list(y_pred) a['实际值']=list(y_test) from sklearn.metrics import accuracy_score score=accuracy_score(y_pred,y_test) clf.score(X_test,y_test) y_pred_proba=clf.predict_proba(X_test) from sklearn.metrics import roc_curve fpr,tpr,thres=roc_curve(y_test,y_pred_proba[:,1]) import matplotlib.pyplot as plt plt.plot(fpr,tpr) plt.show() from sklearn.metrics import roc_auc_score score=roc_auc_score(y_test,y_pred_proba[:,1]) clf.feature_importances_#查看特征重要性 features=X.columns#获取特征名称 importances=clf.feature_importances_#获取特征重要性 #整理成二维表格,并按特征重要性降序排列 importances_df=pd.DataFrame() importances_df['特征名称']=features importances_df['特征重要性']=importances importances_df.sort_values('特征重要性',ascending=False) #模型参数调优 ·max_depth:弱学习器决策树的最大深度,默认取3。 ·n_estimators:弱学习器的个数,或者说弱学习器的最大迭代次数,默认取100。 ·learning_rate:学习率,又称为每个弱学习器的权重缩减系数,取值范围为(0,1],取值较小意味着要达到一定的学习效果,需要更多 迭代次数和更多弱学习器,默认取0.1。通常用n_estimators和learning_rate一起决定算法的拟合效果,所以这两个参数要一起调优。 from sklearn.model_selection import GridSearchCV parameters={'max_depth':[1,3,5],'n_estimators':[50,100,150],'learning_rate':[0.01,0.05,0.1,0.2]} clf=XGBClassifier() grid_search=GridSearchCV(clf,parameters,scoring='roc_auc',cv=5) grid_search.fit(X_train,y_train)#传入训练集数据 grid_search.best_params_ #输出参数的最优值

LightGBM算法

https://lightgbm.readthedocs.io

优势:训练效率更高;低内存使用;准确率更高;支持并行化学习;可以处理大规模数据。

在命令行窗口中输入并执行命令“pip install lightgbm”,或者在JupyterNotebook中输入并运行代码“!pip install lightgbm”,即可开始安装。

from lightgbm import LGBMClassifier X=[[1,2],[3,4],[5,6],[7,8],[9,10]] y=[0,0,0,1,1] model=LGBMClassifier() model.fit(X,y) print(model.predict([[5,5]])) from lightgbm import LGBMRegressor X=[[1,2],[3,4],[5,6],[7,8],[9,10]] y=[1,2,3,4,5] model=LGBMRegressor() model.fit(X,y) print(model.predict([[5,5]]))

案例

背景

银行等金融机构经常会根据客户的个人资料、财产等情况,来预测借款客户是否会违约,以便进行贷前审核、贷中管理、贷后违约处理等工作。金融处理的就是风险,需要在风险和收益之间寻求一个平衡点,现代金融在某种程度上是一个风险定价的过程。通过海量数据对客户进行风险评估并进行合适的借款利率定价,这便是一个典型的风险定价过程,又称为大数据风控。

import pandas as pd df=pd.read_excel('客户信息及违约表现.xlsx') X=df.drop(columns='是否违约') Y=df['是否违约'] from sklearn.model_selection import train_test_split X_train,X_test,y_train,y_test=train_test_split(X,Y,test_size=0.2,random_state=123) from lightgbm import LGBMClassifier model=LGBMClassifier() model.fit(X_train,y_train) #模型评估及预测 y_pred=model.predict(X_test) a=pd.DataFrame()#创建一个空DataFrame a['预测值']=list(y_pred) a['实际值']=list(y_test) from sklearn.metrics import accuracy_score score=accuracy_score(y_pred,y_test)#查看模型准确率 from sklearn.metrics import roc_auc_score score=roc_auc_score(y_test.values,y_pred_proba[:,1])#查看预测效果 features=X.columns#获取特征名称 importances=model.feature_importances_#获取特征重要性 #整理成二维表格,并按特征重要性降序排列 importances_df=pd.DataFrame() importances_df['特征名称']=features importances_df['特征重要性']=importances importances_df.sort_values('特征重要性',ascending=False) #模型参数调优 from sklearn.model_selection import GridSearchCV parameters={'num_leaves':[10,15,31],'n_estimators':[10,20,30],'learning_rate':[0.05,0.1,0.2]} model=LGBMClassifier() grid_search=GridSearchCV(model,parameters,scoring='roc_auc',cv=5) grid_search.fit(X_train,y_train)#传入数据 grid_search.best_params_#输出参数的最优值



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3